{% extends "knn.html" %}

{% block title %}关于决策树{% endblock %}

{% block description %}
<p><b>决策树</b>，是一种树状结构，用于分类的的一种算法。</p>
<p><b>工作原理：</b>决策树的每一个叶节点对应着一个分类，非叶节点对应着在某个属性上的划分，根据样本在该属性上的不同取值将其划分成若干个子集。对于非纯的叶节点，多数类的标号给出到达这个节点的样本所属的类。构造决策树的核心问题是在每一步如何选择适当的属性对样本做拆分。</p>
<p><b>决策树之ID3：</b>核心是在决策树的各级节点上，使用信息增益方法作为属性的选择标准，来帮助确定生成每个节点时所应采用的合适属性。用户给定的簇的个数，即要将原始数据聚为K类。K的值为一个大于0、小于数据个数的整数。</p>
<p><b>算法优点：</b>易于理解和实现、对缺失值不敏感、在相对短的时间内能够对大型数据源做出可行且效果良好的结果。</p>
<p><b>算法缺点：</b>对连续性的字段比较难预测、当类别太多时，错误可能就会增加的比较快。</p>
<p><b>适用数据范围：</b>数值型、常规型。</p>
{% endblock %}


{% block input %}
<div class="span9">
    <form class="bs-example bs-example-form " method="post" name="knn" role="form" action="" enctype="multipart/form-data">
    {% csrf_token %}
    <!--格式-->
    <label>测试数据:</label>
        <input type="text" class="form-control" placeholder="数字间用英文逗号分隔" name="testset_input" value="{{ test_set }}" required="required">
        <input type="file" name="csv" required="required" > 
        <p class="form-btn">
            <button type="submit" class="btn btn-primary btn-lg " name="ok" onclick=draw()>上传文件</button>
        </p>
    </form>
</div>
{% endblock %}


{% block resu %}
{% if result  %}
<hr>
<p><h4>分析结果 </h4></p>
<br>
<div class="content">
<p>您输入的数据为：<b>{{ test_set }}</b>，</p>
<p>该对象的决策结果为：<b>{{ result }}</b>类.</p>
<p>所构造的决策树模型为：{{ tree }}</p>
<br><br>
<p>结果说明：以结果“{'no surfacing': {0.0: 'no', 1.0: {'flippers': {0.0: 'no', 1.0: 'yes'}}}}”为例，该字典表示如下图所示的决策树模型。</p>
<p><img src="../static/img/tree.png"></p>
</div>
{% endif %}
{% endblock %}


